﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace QLKS
{
    public partial class NhapKH : Form
    {
        public f_Login flogin = new f_Login();
        public Dictionary<string, string> GetPassFromUser;
        public Mysql qmysql = new Mysql();
        public string makh;
        public NhapKH()
        {
            InitializeComponent();
        }

        private void NhapKH_Load(object sender, EventArgs e)
        {
            //Getdata from database.
            string cmdText = "SELECT MaKH AS `Mã KH` , TenKH AS `Tên KH`, Diachi as 'Địa chỉ', Dienthoai as 'Điện Thoại', CMND FROM ht_customers";
            Dictionary<string, string> Params = new Dictionary<string, string>();
            DataTable GetAllKH = qmysql.SelectReaderSqlCommandDatatable(cmdText, Params);
            grv_kh.DataSource = GetAllKH;
        }

        private void grv_kh_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            tx_makh.Text = grv_kh.Rows[e.RowIndex].Cells["Mã KH"].Value.ToString();
            tx_tenkh.Text = grv_kh.Rows[e.RowIndex].Cells["Tên KH"].Value.ToString();
            tx_diachi.Text = grv_kh.Rows[e.RowIndex].Cells["Địa chỉ"].Value.ToString();
            tx_dtkh.Text = grv_kh.Rows[e.RowIndex].Cells["Điện Thoại"].Value.ToString();
            tx_cmnd.Text = grv_kh.Rows[e.RowIndex].Cells["CMND"].Value.ToString();
        }

         public string LocChuoi(string strText)
        {
            return Regex.Replace(strText.Trim(), @"\W\s+", "");
        }

      
        private void btn_Add_Click(object sender, EventArgs e)
        {
            int error = 0;
            if (error == 0 && (tx_tenkh.Text == "" || tx_cmnd.Text == ""))
            {
                MessageBox.Show("Không để trống thông tin trong các mục có dấu *", "Thông Báo");
                error = 1;
            }

            //get data
            string tmp_tenkh = LocChuoi(tx_tenkh.Text);
            string tmp_diachi = LocChuoi(tx_diachi.Text);
            string tmp_dienthoai = LocChuoi(tx_dtkh.Text);
            string tmp_cmnd = LocChuoi(tx_cmnd.Text);

            if (error == 0)
            {
                //Getdata from database.
                string cmdTextCdta = "SELECT * FROM ht_customers WHERE TenKH=?tenkh AND CMND=?cmnd LIMIT 0,1";
                Dictionary<string, string> Params = new Dictionary<string, string>();
                Params["tenkh"] = tmp_tenkh;
                Params["cmnd"] = tmp_cmnd;
                Dictionary<string, string> GetInfoFromKH = qmysql.SelectReaderSqlCommand(cmdTextCdta, Params);
                //
                if (GetInfoFromKH.Count > 0)
                {
                    MessageBox.Show("Khách hàng đã tồn tại trong hệ thống", "Thông Báo");
                    error = 1;
                }
            }

            //add data
            if (error == 0)
            {
                string cmdTextIsnv = "INSERT INTO ht_customers(TenKH,Diachi,Dienthoai,CMND) VALUES(?tenkh,?diachi,?dienthoai,?cmnd)";
                Dictionary<string, string> Params_isnv = new Dictionary<string, string>();
                Params_isnv["tenkh"] = tmp_tenkh;
                Params_isnv["diachi"] = tmp_diachi;
                Params_isnv["dienthoai"] = tmp_dienthoai;
                Params_isnv["cmnd"] = tmp_cmnd;
                this.qmysql.NonQueryMysqlCommand(cmdTextIsnv, Params_isnv);
                MessageBox.Show("Đã khách hàng thành công", "Thông Báo");
                //reload data
                //Getdata from database.
                string cmdText = "SELECT MaKH AS `Mã KH` , TenKH AS `Tên KH`, Diachi as 'Địa chỉ', Dienthoai as 'Điện Thoại', CMND FROM ht_customers";
                Dictionary<string, string> Params = new Dictionary<string, string>();
                DataTable GetAllKH = qmysql.SelectReaderSqlCommandDatatable(cmdText, Params);
                grv_kh.DataSource = GetAllKH;
                grv_kh.Refresh();
            }
        }

        private void btn_Edit_Click(object sender, EventArgs e)
        {
            int error = 0;
            if (error == 0 && (tx_tenkh.Text == "" || tx_cmnd.Text == ""))
            {
                MessageBox.Show("Không để trống thông tin trong các mục có dấu *", "Thông Báo");
                error = 1;
            }

            //get data
            string tmp_makh = tx_makh.Text;
            string tmp_tenkh = LocChuoi(tx_tenkh.Text);
            string tmp_diachi = LocChuoi(tx_diachi.Text);
            string tmp_dienthoai = LocChuoi(tx_dtkh.Text);
            string tmp_cmnd = LocChuoi(tx_cmnd.Text);

            if (error == 0)
            {
                //Getdata from database.
                string cmdTextCdta = "SELECT * FROM ht_customers WHERE TenKH=?tenkh AND CMND=?cmnd LIMIT 0,1";
                Dictionary<string, string> Params = new Dictionary<string, string>();
                Params["tenkh"] = tmp_tenkh;
                Params["cmnd"] = tmp_cmnd;
                Dictionary<string, string> GetInfoFromKH = qmysql.SelectReaderSqlCommand(cmdTextCdta, Params);
                //
                if (GetInfoFromKH.Count > 5)
                {
                    MessageBox.Show("Khách hàng đã tồn tại trong hệ thống", "Thông Báo");
                    error = 1;
                }
            }

            //add data
            if (error == 0)
            {
                string cmdTextIsnv = "UPDATE ht_customers SET TenKH=?tenkh,Diachi=?diachi,Dienthoai=?dienthoai,CMND=?cmnd WHERE MaKH=?makh";
                Dictionary<string, string> Params_isnv = new Dictionary<string, string>();
                Params_isnv["tenkh"] = tmp_tenkh;
                Params_isnv["diachi"] = tmp_diachi;
                Params_isnv["dienthoai"] = tmp_dienthoai;
                Params_isnv["cmnd"] = tmp_cmnd;
                Params_isnv["makh"] = tmp_makh;
                this.qmysql.NonQueryMysqlCommand(cmdTextIsnv, Params_isnv);
                MessageBox.Show("Đã sửa Khách hàng thành công", "Thông Báo");
                //reload data
                //Getdata from database.
                string cmdText = "SELECT MaKH AS `Mã KH` , TenKH AS `Tên KH`, Diachi as 'Địa chỉ', Dienthoai as 'Điện Thoại', CMND FROM ht_customers";
                Dictionary<string, string> Params = new Dictionary<string, string>();
                DataTable GetAllKH = qmysql.SelectReaderSqlCommandDatatable(cmdText, Params);
                grv_kh.DataSource = GetAllKH;
                grv_kh.Refresh();
            }
        }

        private void btn_Delete_Click(object sender, EventArgs e)
        {
            int error = 0;
            if (error == 0 && (tx_tenkh.Text == "" || tx_cmnd.Text == ""))
            {
                MessageBox.Show("Không để trống thông tin trong các mục có dấu *", "Thông Báo");
                error = 1;
            }

            if (error == 0 && this.qmysql.GetNumCustomerRoom(tx_makh.Text)>0)
            {
                MessageBox.Show("Không thể xóa khách hàng đang thuê phòng", "Thông Báo");
                error = 1;
            }

            if (error == 0)
            {
                DialogResult plv = MessageBox.Show("Bạn có chắc chắn thực hiện thao tác này không ?", "Xóa Tài Khoản", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (plv.ToString() == "No")
                {
                    error = 1;
                }
            }
            //get data
            string tmp_makh = tx_makh.Text;
            if (error == 0)
            {
                string cmdTextIsnv = "DELETE FROM ht_customers WHERE MaKH=?makh";
                Dictionary<string, string> Params_isnv = new Dictionary<string, string>();
                Params_isnv["makh"] = tmp_makh;
                this.qmysql.NonQueryMysqlCommand(cmdTextIsnv, Params_isnv);
                MessageBox.Show("Đã xóa khách hàng thành công", "Thông Báo");
                //reload data
                //Getdata from database.
                string cmdText = "SELECT MaKH AS `Mã KH` , TenKH AS `Tên KH`, Diachi as 'Địa chỉ', Dienthoai as 'Điện Thoại', CMND FROM ht_customers";
                Dictionary<string, string> Params = new Dictionary<string, string>();
                DataTable GetAllKH = qmysql.SelectReaderSqlCommandDatatable(cmdText, Params);
                grv_kh.DataSource = GetAllKH;
                grv_kh.Refresh();
            }
        }

        private void btn_Choice_Click(object sender, EventArgs e)
        {
            if (tx_makh.Text != "")
            {
                Program.IDKH = tx_makh.Text;
                PNP pnp = new PNP();
                pnp.MdiParent = this.ParentForm;
                pnp.Show();
            }
            else
                MessageBox.Show("Bạn chưa lấy khách hàng cần chọn.", "Thông Báo");
        }

        private void btn_Cancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        
    }
}
